﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BUS;
using DTO;

namespace Control
{
    public partial class ctrlGhiNhanMatSach : DevExpress.XtraEditors.XtraUserControl
    {
        public ctrlGhiNhanMatSach()
        {
            InitializeComponent();

            //format lại ngày tháng
            this.dateNgayGhiNhan.Properties.DisplayFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayGhiNhan.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayGhiNhan.Properties.EditFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayGhiNhan.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayGhiNhan.Properties.Mask.EditMask = "dd/MM/yyyy";

            //chỉ cho nhập số trên textbox tiền phạt
            this.txtTienPhat.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
        }

        private void ctrlGhiNhanMatSach_Load(object sender, EventArgs e)
        {
            //load ds độc giả
            lookUpMaTheDocGia.Properties.DataSource = DocGiaBUS.DocDanhSach();
            lookUpMaTheDocGia.Properties.DisplayMember = "MaDocGia";
            lookUpMaTheDocGia.Properties.ValueMember = "MaDocGia";

            //load ds sách
            lookUpTenSach.Properties.DisplayMember = "TenSach";
            lookUpTenSach.Properties.ValueMember = "MaSach";

            //gán datetime
            dateNgayGhiNhan.DateTime = DateTime.Today;
            
            //đọc lên nhân viên
            txtTenNhanVien.Text = session.tenNhanVien;
        }

        private void lookUpMaThe_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                //Lấy thông tin từ lookup
                DocGiaDTO dto = (DocGiaDTO)lookUpMaTheDocGia.GetSelectedDataRow();

                //gán vào text họ tên độc giả
                txtHoTenDocGia.Text = dto.TenDocGia;
                
                //đọc thông tin sách độc giả đang mượn
                lookUpTenSach.Properties.DataSource = PhieuMuonSachBUS.SachDangMuon(dto.MaDocGia);

                //clear textbox sách cũ
                txtTriGia.Text = "";

                //reset tiền phạt
                txtTienPhat.Text = "0";
            }
            catch
            {
            }
        }

        private void lookUpTenSach_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                //Lấy thông tin từ lookup
                SachDTO dto = (SachDTO)lookUpTenSach.GetSelectedDataRow();

                //Đọc thông tin lên textbox
                txtTriGia.Text = dto.TriGia.ToString();
            }
            catch
            {
            }
        }

        private void LamMoi()
        {
            //refresh về null
            lookUpTenSach.Properties.DataSource = null;

            //reload
            lookUpMaThe_EditValueChanged(null, null);
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            if (KiemTra() == false)
                return;

            try
            {
                //Lấy thông tin độc giả từ lookup
                DocGiaDTO dtoDocGia = (DocGiaDTO)lookUpMaTheDocGia.GetSelectedDataRow();
                dtoDocGia.TienNo = dtoDocGia.TienNo + float.Parse(txtTienPhat.Text);

                //cập nhật tiền nợ xuống csdl
                DocGiaBUS.CapNhatTienNo(dtoDocGia);

                //Lấy thông tin sách từ lookup
                SachDTO dtoSach = (SachDTO)lookUpTenSach.GetSelectedDataRow();

                //cập nhật tình trạng sách
                SachBUS.GhiNhanMatSach(dtoSach);

                //thêm phiếu ghi nhận mất sách
                PhieuGhiNhanMatSachDTO dtoPhieu = new PhieuGhiNhanMatSachDTO
                {
                    MaDocGia = dtoDocGia.MaDocGia,
                    MaNhanVien = session.maNhanVien,
                    MaPhieuGhiNhan = 0,
                    MaSach = dtoSach.MaSach,
                    NgayGhiNhan = dateNgayGhiNhan.DateTime,
                    Tienphat = float.Parse(txtTienPhat.Text)
                };

                //tạo phiếu xuống csdl
                PhieuGhiNhanMatSachBUS.Them(dtoPhieu);

                //refresh
                LamMoi();

                //thành công
                MessageBox.Show("Ghi nhận thành công!!!");
            }
            catch (Exception ex)
            {
                //báo lỗi
                MessageBox.Show(ex.Message, "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private bool KiemTra()
        {
            //MessageBox.Show("", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //return false;
            if (lookUpMaTheDocGia.ItemIndex == -1)
            {
                MessageBox.Show("Chưa chọn thẻ độc giả", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (lookUpTenSach.ItemIndex == -1)
            {
                MessageBox.Show("Không có sách được chọn", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (float.Parse(txtTienPhat.Text) == 0)
            {
                MessageBox.Show("Số tiền phạt không để trống", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTienPhat.Focus();
                return false;
            }

            if (float.Parse(txtTienPhat.Text) < float.Parse(txtTriGia.Text))
            {
                MessageBox.Show("Tiền phạt không được nhỏ hơn trị giá sách", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTienPhat.Focus();
                return false;
            }

            return true;
        }
    }
}
